<?php
/**
 * 预热系统缓存
 * 用于解决首次访问慢的问题
 * 
 * 使用方法：
 * php warm_cache.php
 */

// 加载框架
require __DIR__ . '/vendor/autoload.php';

// 创建应用实例
$app = new think\App();
$app->initialize();

echo "=== 开始预热系统缓存 ===\n\n";

try {
    // 1. 预热权限节点缓存
    echo "[1/3] 预热权限节点缓存...\n";
    $startTime = microtime(true);
    
    // 强制刷新节点缓存
    \think\admin\service\NodeService::getMethods(true);
    
    $elapsed = round((microtime(true) - $startTime) * 1000, 2);
    echo "  ✓ 完成！耗时: {$elapsed}ms\n\n";
    
    // 2. 预热系统配置缓存
    echo "[2/3] 预热系统配置缓存...\n";
    $startTime = microtime(true);
    
    // 读取所有系统配置，触发缓存
    \think\admin\service\SystemService::get();
    
    $elapsed = round((microtime(true) - $startTime) * 1000, 2);
    echo "  ✓ 完成！耗时: {$elapsed}ms\n\n";
    
    // 3. 预热菜单缓存
    echo "[3/3] 预热菜单缓存...\n";
    $startTime = microtime(true);
    
    // 读取菜单数据，触发缓存
    \think\admin\service\MenuService::getTree();
    
    $elapsed = round((microtime(true) - $startTime) * 1000, 2);
    echo "  ✓ 完成！耗时: {$elapsed}ms\n\n";
    
    echo "=== 缓存预热完成！===\n";
    echo "\n提示：现在访问后台应该会快很多了！\n";
    
} catch (\Exception $e) {
    echo "\n❌ 错误: " . $e->getMessage() . "\n";
    echo "文件: " . $e->getFile() . "\n";
    echo "行号: " . $e->getLine() . "\n";
    exit(1);
}

